"""
socket服务器端开发：
    1.创建socket对象
    2.绑定IP地址和端口
    3.监听端口
    4.等待客户端发送消息
    5.conn对象接收和回复客户端消息
    6.关闭连接
"""

import socket

# 创建socket对象
socket_server = socket.socket()
# 绑定IP地址和端口
socket_server.bind(("localhost", 8888))
# 监听端口 backlog:表示接受的连接数量
socket_server.listen(1)
# 等待客户端连接 返回元组 (socket object, address info) 连接信息和地址信息，accept方法会阻塞
conn, address = socket_server.accept()
print(f"接收到了客户端的连接，客户端的信息是：{address}")

while True:
    # 接收客户端的信息 recv(bufsize)：bufsize缓冲区大小一般设置1024即可,使用本次连接的对象conn，而非socket_server对象
    client_msg: str = conn.recv(1024).decode("UTF-8")
    print(f"客户端发来的消息是：{client_msg}")
    # 发送回复消息 encode方法将字符串编码为字节数组对象
    server_msg = input("请输入回复的消息内容：")
    if server_msg == 'exit':
        break
    conn.send(server_msg.encode("UTF-8"))

# 关闭连接
conn.close()
socket_server.close()
